package com.itcast.activiti.service;

import com.itcast.activiti.domain.AddSign;
import com.itcast.activiti.domain.RemoveSign;
import org.activiti.engine.impl.persistence.entity.TaskEntity;
import org.activiti.engine.runtime.ProcessInstance;

import java.util.List;

/**
 * <p>
 * 审批定义表  服务类
 * </p>
 *
 * @author itcast
 * @since 2021-02-25
 */
public interface IProcessControlService {

    /**
     * 加签
     *
     * @param assignee   操作人
     * @param taskEntity 当前任务处理
     * @param addSign    加签信息
     */
    void addSign(String assignee, TaskEntity taskEntity, AddSign addSign);

    /**
     * 减签
     *
     * @param assignee        操作人
     * @param processInstance 当前处理任务
     * @param removeSign      减签信息
     */
    void removeSign(String assignee, ProcessInstance processInstance, RemoveSign removeSign);

    /**
     * 获取加减签后的所有流程定义key
     *
     * @param processDefinitionKeys
     * @return
     */
    List<String> findProcessDefinitionKeys(List<String> processDefinitionKeys);
}
